home *** CD-ROM | disk | FTP | other *** search
- %
- % Either:
- % \address 3
- %
- % then enter three addresses, blank lines between them, or
- %
- % \faddress foo.tex
- %
- % where foo.tex contains a bunch of labels, with blank lines between them.
- %
- % Make sure to use \done to exit, rather than \bye.
- %
- \hsize=8.25truein\hoffset=-0.875truein
- \vsize=11truein\voffset=-1.0truein
- \nopagenumbers\raggedbottom\offinterlineskip
- %
- \newdimen\vlsize\newdimen\hlsize
- \vlsize=1.56truein
- \hlsize=2.75truein
- %
- \font\huge=cmbx12 scaled\magstep 4
- \font\notsohuge=cmbx10 scaled\magstep3
- \font\bigtt=cmtt10 scaled 1200
- \font\lbls=cmbx10 scaled\magstephalf
- \font\hugelogo=logobf10 scaled\magstep 5
- \def\hugeMF{{\hugelogo METAFONT}}
- %
- \def\prompt{\immediate\write0{\noexpand\address\noexpand\faddress\noexpand\done}
- \immediate\write0{<\number\labcount> Total Labels}}
- %
- \newcount\n
- \def\dotimes #1 #2{\n=#1
- \loop
- #2
- \advance\n by -1
- \ifnum\n>0\repeat}
- %
- \let\LMR=L
- \newbox\leftbox
- \newbox\midbox
- \newcount\labcount
- \labcount=0
- \def\ship#1{\if L\LMR
- \global\setbox\leftbox=#1 \global\let\LMR=M
- \else\if M\LMR
- \global\setbox\midbox=#1 \global\let\LMR=R
- \else
- \line{\box\leftbox\hss\box\midbox\hss #1} \global\let\LMR=L
- \fi\fi
- \global\advance\labcount by1}
- %
- \def\emptybox{\vbox to \vlsize{\hsize=\hlsize\vfill\centerline{\strut}}}
- \def\done{\if M\LMR \ship\emptybox\ship\emptybox
- \else\if R\LMR \ship\emptybox
- \fi\fi\vfill\eject\end}
- %
- \def\oninterlineskip{\baselineskip=12pt\lineskip=1pt\lineskiplimit=0pt}
- %
- \newif\ifok
- \def\blankline{\par}
- \newif\ifcont
- %
- \newdimen\maxadsize
- \maxadsize=2.6truein
- \newbox\addbox
- \def\makeadd{\vbox{\oninterlineskip
- \loop
- \read0 to\add
- \ifx\add\blankline
- \global\contfalse
- \else
- \global\conttrue
- \fi
- \ifcont
- \setbox\addbox=\hbox{\add}
- \ifdim\maxadsize<\wd\addbox
- \message{Line too wide!}
- \else
- \box\addbox
- \fi
- \repeat}}
- %
- \def\address #1 {\dotimes #1
- {\ship{\vbox to \vlsize{\hsize=\hlsize
- \oninterlineskip
- \lbls
- \vss\hbox to\hlsize{\hss
- \makeadd
- \hss}\vss}}}
- \prompt}
- %
- \newread\filein
- \def\fakeadd{\vbox{\oninterlineskip
- \loop
- \read\filein to\add
- \ifx\add\blankline
- \global\contfalse
- \else
- \global\conttrue
- \fi
- \ifcont
- \setbox\addbox=\hbox{\add}
- \ifdim\maxadsize<\wd\addbox
- \message{\add: }
- \message{Line too wide!}
- \else
- \box\addbox
- \fi
- \repeat}}
- %
- \newif\ifstillokay
- \def\dofadds{
- \loop
- \ship{\vbox to \vlsize{\hsize=\hlsize
- \oninterlineskip
- \lbls
- \vss\hbox to\hlsize{\hss\fakeadd\hss}
- \vss}}
- \ifeof\filein
- \stillokayfalse
- \else
- \stillokaytrue
- \fi
- \ifstillokay
- \repeat
- \closein\filein}
- %
- \def\faddress #1 {
- \openin\filein=#1
- \ifeof\filein
- \message{#1: File not found}
- \else
- \dofadds
- \fi
- \prompt}
- %
- \prompt
-